// set代表的就是集合 而 map是hash表
// 集合就是不能有重复的项目
// 可以用作数组去重

let set = new Set([1,2,3,3,2,1]);
console.log(set.size);

// console.log('set:',set); //set: Set(3) { 1, 2, 3 }

// set 具备 Symbol.iterator，可以进行`...`、for&of(不支持for&in)、forEach、
// console.log([...set]); //[ 1, 2, 3 ]
// set.forEach(i=>console.log(i)) //1 2 3

// console.log(set.keys()); //[Set Iterator] { 1, 2, 3 }
// console.log(set.values()); //[Set Iterator] { 1, 2, 3 }

// 他的key和值是一样的
// console.log(set.entries()); //[Set Entries] { [ 1, 1 ], [ 2, 2 ], [ 3, 3 ] }

// console.log(set.has(3)); //true





/** 如何求两个数组 的并集  差集  交集*/
// let arr1 = [1,2,3];
// let arr2 = [3,4,5]; // [...arr1,...arr2]
// set是可以被迭代的 [...set]

// 1)并集
// let set = new Set([...arr1,...arr2]);
// let union = [...set]; // 转成数组

// 2)交集
// let s1 = new Set(arr1);
// let s2 = new Set(arr2);
// let intersection = [...s1].filter(item=>{ // 1,2,3  如果返回true 就保留到新的数组中
//     return s2.has(item);
// })
// console.log(intersection);

// 3)差集
/*let s1 = new Set(arr1);
let s2 = new Set(arr2);
let difference = [...s1].filter(item=>{ // 1,2,3  如果返回true 就保留到新的数组中
    return !s2.has(item);
});
console.log(difference);*/
